1. Field
This application relates generally to computer graphics and, more specifically, to using computer systems to simulate the surface of large bodies of water, such as an ocean.
2. Description of the Related Art
Computers and computer graphic systems are widely used to generate images of a three-dimensional scene as part of a computer-generated animation sequence. Within a three-dimensional scene, the computer graphics system may simulate natural phenomena, such as oceans or large bodies of water. One process of simulating such phenomena is to generate surface information, such as surface points in three-dimensional scene space. These surface points can be used to generate a mesh of polygons that define a three-dimensional surface model of a three-dimensional body or object. Known rendering techniques or light simulation algorithms may be applied to the surface model to produce a fully rendered image that appears realistic to the human eye.
When animating dynamic natural phenomena, the three-dimensional surface model may be computed over a multitude of time increments. An image may be generated at each time increment, such that a series of images may be sequentially displayed to create a computer animation sequence. The challenge lies in producing a set of surface points that is able to accurately simulate complex dynamic phenomena, such as waves on a large body of water. Preferably, a computer simulation is able to deliver accurate and realistic results without becoming a computational burden on the computer graphics system. Therefore, there is an interest in the art of computer animation to develop efficient processes of producing realistic simulations of dynamic natural phenomena.
Simulation of natural phenomena, such as the surface of a body of water, can be especially demanding on a computer graphics system. The simulation must be performed at a relatively high resolution to capture the complex shapes and surfaces that form individual waves and swells in a large body of water. Also, because bodies of water are constantly in motion, the simulation must be computed for a large number of animation frames to give the appearance of smooth fluid motion.
In the past, a variety of processes were used to address the problem of simulating water waves. Some known processes focus on modeling a dynamic wave surface using a wave front. These processes simulate the physics governing individual particle interaction as energy or a wave front is propagated through the medium. Yuksel, C., House, D. & Keyser, J., Wave Particles. ACM Trans. Graph. 26, 3, Article 99 (July 2007). These processes are well suited for representing certain types of waves, such as ripples or wakes created by an interaction of a water surface with floating or solid objects. However, this type of process may be inadequate when creating realistic simulations of large bodies of water in which wave surfaces are composed of a wide spectrum of wave frequencies.
Other processes are better suited for modeling the rich and full spectrum of frequencies that make up an ocean wave surface. For example, processes that use a Fourier spectral algorithm are able to reproduce the complex surfaces of a large body of water in a way that produces a realistic simulation. Tessendorf, Jerry et al., Simulating Ocean Water, ACM SIGGRAPH 2004 Course 31, The Elements of Nature: Interactive and Realistic Techniques, ACM, New York, N.Y., at 2-2. While these processes are capable of producing cinematic-quality results, they may be computationally expensive. In such Fourier processes, the speed of computation is directly affected by the bandwidth of the wave spectrum used to simulate the surface of the wave. For example, if the band of frequencies is narrow, then the surface may be computed quickly and efficiently, but the results may be visually undesirable. If a broad spectrum of ocean frequencies is simulated, then the visual effect may be satisfactory, but the simulation may consume too many computing resources to be practical for the computer graphics system. Thus, the computer animator must make a tradeoff between the resolution of the ocean model and the computer resources available for the animation sequence.
What is needed is a process of efficiently simulating waves in a large body of water capable of producing a rich and full spectrum of wave frequencies, while using a practical amount of computing resources.